

package controladores;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import modelos.MCategoria;
import modelos.MFabrica;
import modelos.MIngrediente;
import vistas.VIngrediente;


public class CIngrediente implements  ActionListener{

    private VIngrediente vista;
    private MFabrica modelo;

    public CIngrediente(VIngrediente vista) {
        this.vista = vista;
        modelo = new MIngrediente();
    }

    public void actionPerformed(ActionEvent ae) {
        if(ae.getActionCommand().equals("Registrar")){
                registrar();
        }
        else if(ae.getActionCommand().equals("Consultar")){
            consultar();
        }
        else if(ae.getActionCommand().equals("Eliminar")){
            eliminar();
            vista.reiniciar();
        }
        else if(ae.getActionCommand().equals("Actualizar")){
                actualizar();
                vista.reiniciar();
        }
        else if(ae.getActionCommand().equals("Salir")){
            vista.setVisible(false);
            vista.reiniciar();
        }
        else{
            vista.reiniciar();
        }
    }

    private void registrar() {
    	if(vista.validarNumeros()){
    		((MIngrediente) modelo).setCodigo(Integer.parseInt(vista.getTxtCodigo().getText()));
    	}
    	else
    		return;
        if(vista.validarCamposVacios())
                if(vista.validarNumeros())
                    if(((MIngrediente) modelo).validarCodigo("Ingrediente"))
                        if(((MIngrediente) modelo).validarDescripcion("Ingrediente", vista.getTxtDescripcion().getText())){
                        	((MIngrediente) modelo).setDescripcion(vista.getTxtDescripcion().getText());
                        	((MIngrediente) modelo).setCodigo(Integer.parseInt(vista.getTxtCodigo().getText()));
                        	((MIngrediente) modelo).setEstatus("A");
                        	((MIngrediente) modelo).setStock(Float.parseFloat(vista.getTxtCantidad().getText()));
                        	((MIngrediente) modelo).setPrecio(Float.parseFloat(vista.getTxtPrecio().getText()));
                            if(((MIngrediente) modelo).registrar()){
                                JOptionPane.showMessageDialog(new JFrame(),"El ingrediente se ha registrado exitosamente","Comida Rapida",JOptionPane.INFORMATION_MESSAGE);
                                vista.reiniciar();
                            }
                        }
                        else
                            JOptionPane.showMessageDialog(new JFrame(),"La descripcion ya se encuentra registrada","Comida Rapida",JOptionPane.INFORMATION_MESSAGE);
                    else
                        JOptionPane.showMessageDialog(new JFrame(),"El codigo ya se encuentra registrada","Comida Rapida",JOptionPane.INFORMATION_MESSAGE);
                else;
            else;
    }

    private void consultar() {
        if(!vista.getTxtCodigo().getText().isEmpty()){
        	((MIngrediente) modelo).setCodigo(Integer.parseInt(vista.getTxtCodigo().getText()));
        	((MIngrediente) modelo).setEstatus("A");
           if(modelo.consultar()){
                vista.getTxtCodigo().setEditable(false);
                vista.getTxtDescripcion().setText(((MIngrediente) modelo).getDescripcion());
                vista.getTxtCantidad().setText(""+((MIngrediente) modelo).getStock());
                vista.getTxtPrecio().setText(""+((MIngrediente) modelo).getPrecio());
                vista.mostrar();
            }
           else
               JOptionPane.showMessageDialog(new JFrame(),"El codigo ingresado no pertenece a ningun ingrediente","Comida Rapida",JOptionPane.INFORMATION_MESSAGE);
        }
       else
           JOptionPane.showMessageDialog(new JFrame(),"El campo codigo esta vacio","Comida Rapida",JOptionPane.INFORMATION_MESSAGE);
    }

    private void eliminar() {
       if(!vista.getTxtCodigo().getText().isEmpty()){
    	   ((MIngrediente) modelo).setCodigo(Integer.parseInt(vista.getTxtCodigo().getText()));
           if(((MIngrediente) modelo).eliminar())
               JOptionPane.showMessageDialog(new JFrame(),"El ingrediente se ha eliminado exitosamente","Comida Rapida",JOptionPane.INFORMATION_MESSAGE);
           else
               JOptionPane.showMessageDialog(new JFrame(),"El codigo ingresado no pertenece a ningun ingrediente","Comida Rapida",JOptionPane.INFORMATION_MESSAGE);
        }
       else
           JOptionPane.showMessageDialog(new JFrame(),"El campo codigo esta vacio","Comida Rapida",JOptionPane.INFORMATION_MESSAGE);
    }

    private void actualizar() {
        if(vista.validarCamposVacios())
            if(vista.validarNumeros()){
            	((MIngrediente) modelo).setCodigo(Integer.parseInt(vista.getTxtCodigo().getText()));
            	((MIngrediente) modelo).setDescripcion(vista.getTxtDescripcion().getText().toUpperCase());
            	((MIngrediente) modelo).setStock(Float.parseFloat(vista.getTxtCantidad().getText())+Float.parseFloat(vista.getTxtCantCom().getText()));
            	((MIngrediente) modelo).setPrecio(Float.parseFloat(vista.getTxtPrecio().getText()));
                if(((MIngrediente) modelo).actualizar())
                    JOptionPane.showMessageDialog(new JFrame(),"La ingrediente se ha ingrediente exitosamente","Comida Rapida",JOptionPane.INFORMATION_MESSAGE);
                else
                    JOptionPane.showMessageDialog(new JFrame(),"El codigo ingresado no pertenece a ningun ingrediente","Comida Rapida",JOptionPane.INFORMATION_MESSAGE);
        }
    }

}
